Elastic Stack - Heartbeat

安裝

Elastic Heartbeat guide

A. 前置作業

  1. 準備 Elasticsearch host,版本建議與 heartbeat 相同
  2. Elasticsearch 需要註冊 licence

B. 步驟流程

1. 下載 docker image

1
docker pull docker.elastic.co/beats/heartbeat:6.4.3

2. 建立 heartbeat.yml

heartbeat.yml 為 Heartbeat 的設定檔,當中定義了欲監控的服務,與輸出資料的寫入對象等設定。

關於 setup.template 的說明,請參考 Load the index template in Elasticsearch

該檔案若有任何異動,Heartbeat 服務則需要重新啟動。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
setup.template.name: "my-heartbeat"
setup.template.pattern: "my-heartbeat-*"
# 預期要監控的 serives
heartbeat.monitors:
- type: http
# 亦支援 cron-like syntax
schedule: '@every 5s'
urls: ["http://my-domain/api/"]
check.response.status: 200
heartbeat.scheduler:
limit: 10
# 指定 ES 作為寫入對象
output.elasticsearch:
hosts: ["http://my-es-host:9200"]
index: "heartbeat-%{[beat.version]}-%{+yyyy.MM.dd}"
# 啟用 kibana 作為 dashboard
setup.kibana:
host: "my-kibana-host:5601"

3. 運行 docker container

1
2
3
4
docker run -d \
--mount type=bind,source="$(pwd)"/heartbeat.yml,target=/usr/share/heartbeat/heartbeat.yml \
--name heartbeat \
docker.elastic.co/beats/heartbeat:6.4.3

運行方式

週期性呼叫 API

Heartbeat 根據設定檔的 heartbeat.monitors 進行監控。

在官方文件 Exported fields 定義了能夠輸出的資訊,其中以下欄位是默認輸出:

發送至 ES 儲存數據

根據設定檔 output.elasticsearch.index 定義之 pattern 作為 index 的命名規則。

透過 Kibana 呈現數據

根據設定檔 setup.kibana 配置,當 Heartbeat 啟動時會建立 Heartbeat visualize & dashboard。

備註

若憑證失效

當 Heartbeat 發送紀錄至 Elasticsearch 時,Heartbeat 會因為該 ES 的憑證過期出現以下錯誤訊息:

1
2
3
[ERROR][o.e.x.s.a.f.SecurityActionFilter] [mpzf-n0] blocking [cluster:monitor/stats] operation due to expired license. Cluster health, cluster stats and indices stats ,
operations are blocked on license expiration. All data operations (read and write) continue to work. ,
If you have a new license, please update it. Otherwise, please reach out to your support contact.,